package com.qq.googleplay.base;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.qq.googleplay.utils.ToastUtils;
import com.qq.googleplay.utils.UIUtils;
import com.qq.googleplay.utils.ViewUtils;

import java.util.List;
import java.util.Map;

/**
 * ============================================================
 * 版 权 ： Google互联网有限公司版权所有 (c) 2016
 * 作 者 : 陈冠杰
 * 版 本 ： 1.0
 * 创建日期 ：2016/3/20 23:58
 * 描 述 ：fragment基类
 * 修订历史 ：
 * ============================================================
 **/
public abstract class BaseFragment extends Fragment {

    protected Activity mActivity;
    private LoadingPager mLoadingPager;

    public LoadingPager getLoadingPager() {
        return mLoadingPager;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mActivity = getActivity();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
            savedInstanceState) {
        //会出现重复添加的问题，
        if (mLoadingPager == null) {//第一次执行
            mLoadingPager = new LoadingPager(UIUtils.getContext()) {
                @Override
                protected LoadedResult initData() {
                    return BaseFragment.this.initData();
                }

                @Override
                public View initSuccessView() {
                    return BaseFragment.this.initSuccessView();
                }
            };
        } else {
            ViewUtils.removeSelfFromParent(mLoadingPager);
           // ((ViewGroup) mLoadingPager.getParent()).removeView(mLoadingPager);

        }
        return mLoadingPager;
    }

    /**
     * @return
     * @desc 返回成功视图
     * @call 正在加载数据完成后，并且数据加载成功
     */
    protected abstract View initSuccessView();

    /**
     * @desc 真正加载数据
     * @call loadData()方法调用的时候
     */
    protected abstract LoadingPager.LoadedResult initData();

    /**
     * @param obj 网络数据json化之后的对象
     * @return
     */
    public LoadingPager.LoadedResult checkState(Object obj) {
        if (obj == null) {
            return LoadingPager.LoadedResult.EMPTY;
        }

        if (obj instanceof List) {
            if (((List) obj).size() == 0) {
                return LoadingPager.LoadedResult.EMPTY;
            }
        }

        if (obj instanceof Map) {
            if (((Map) obj).size() == 0) {
                return LoadingPager.LoadedResult.EMPTY;
            }
        }

        return LoadingPager.LoadedResult.SUCCESS;
    }

    public void toast(String content){
        ToastUtils.toast(content);
    }

    public void toast(Activity activity, String content, int duration){
        ToastUtils.toast(activity,content,duration);
    }
}
